#pragma once

#include "IBrushSpan.h"


class CBrushSpan :
	public IBrushSpan
{
protected: 
	CBrushSpan();
	virtual ~CBrushSpan();
public: 
	virtual XUINT32 AddRef();
	virtual XUINT32 Release();
	XUINT32 GetRef();
	virtual HRESULT SetBrush(const CMILMatrix * pWorldTransform, const struct XRECTF_WH * pBrushBounds, CBrush * pBrush) = 0;
	virtual XINT32 SolidColor(XUINT32 nCPUCore, XINT32 nY, XUINT32 * pPargb) = 0;
	virtual void GenerateColors(struct GENCOLORSDATA * pGCD) = 0;
	virtual HRESULT GenerateClearType(XUINT32 nCPUCore, XINT32 nX, XINT32 nY, XINT32 nCount, struct ClearTypePixel * pClearTypeScanline);
	virtual XUINT32 GetBrushBlendAlpha();
	virtual XBOOL IsLayer();
	virtual XBOOL IsSimpleLayer();
	virtual XBOOL HasClearType();
	virtual XBOOL IsLeafBrush();
private: 
	XUINT32 m_cRef;
protected: 
	XUINT32 m_uOpacity;

};
